#include "XgMessagesQueue.h"

#include "XgMessagesFactory.h"

bool XgMessagesQueue::getMessage(XgMessage** xgmsg)
{
	MSG wmsg;
	::GetMessage(&wmsg, NULL, 0, 0);

	*xgmsg = XgMessagesFactory::fromWin32Msg(wmsg);

	return true;
}

bool XgMessagesQueue::peekMessage(XgMessage** xgmsg)
{
	MSG wmsg;
	::PeekMessage(&wmsg, NULL, 0, 0, FALSE);

	if( xgmsg != NULL )
		*xgmsg = XgMessagesFactory::fromWin32Msg(wmsg);

	return true;
}

void XgMessagesQueue::processMessage(XgMessage* xgmsg)
{
	xgmsg->process();
}

void XgMessagesQueue::exec()
{
	XgMessage* xgmsg;
	while (getMessage(&xgmsg))
	{
		processMessage(xgmsg);
	}
}
